package com.eagle.svnkit;

import org.tmatesoft.svn.core.io.SVNRepository;

public class SvnController {

//    @RequestMapping(value = "/svn/download", method = RequestMethod.GET)
//    public APIResponse downloadFileBy(
//            @ApiParam(name = "path", value = "需要下载文件的相对路径", required = true)
//            @RequestParam(name = "path", required = true)
//                    String path,
//            HttpServletResponse response){
//        SVNProperties svnProperties = new SVNProperties();
//        BufferedOutputStream bos = null;
//        //文件名称
//        try {
//            if (path.startsWith("/")){
//                path = path.replaceFirst("/", "");
//            }
//            String filename = path.substring(path.lastIndexOf("/") + 1);
//            String url = path.substring(0,path.lastIndexOf("/"));
//            filename = URLEncoder.encode(filename,"UTF-8");
//            response.reset();
//
//            response.setContentType("application/force-download");// 设置强制下载不打开
//            response.setCharacterEncoding("UTF-8");
//            response.addHeader("Content-Disposition",
//                    "attachment;fileName=" + filename);// 设置文件名
//            bos = new BufferedOutputStream(response.getOutputStream());
//            SVNRepository svnRepository = SVNUtil.getSVNRepository(SVNUtil.storeUrl + "/" + url);
//            svnHandleService.getSvnFileOutputstream(svnRepository,bos,svnProperties,path);
//            response.flushBuffer();
//            bos.close();
//        } catch (SVNException e) {
//            throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.DOWNLOAD_FILE_FAIL)
//                    .withErrorMessageArguments(e.getMessage());
//        } catch (IOException e) {
//            throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.DOWNLOAD_FILE_FAIL)
//                    .withErrorMessageArguments(e.getMessage());
//        }
//        return APIResponse.success();
//    }
//
//
//    /**
//     * @Author: winterchen
//     * @Description: 获取SVN文件的输出流和文件的属性
//     * @Date: 2018/2/7
//     * @param repository
//     * @param outputStream 输出流
//     * @param fileProperties 文件属性
//     * @param path 文件的相对路径 前面不带/
//     */
//    public void getSvnFileOutputstream(SVNRepository repository, OutputStream outputStream,
//                                       SVNProperties fileProperties, String path){
//
//        if (repository == null || outputStream == null || fileProperties == null || StringUtils.isEmpty(path))
//            throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.DOWNLOAD_FILE_FAIL)
//                    .withErrorMessageArguments("参数不能为空");
//        try {
//            SvnOption.getSvnFileOutputStream(repository,outputStream,fileProperties,path);
//        } catch (SVNException e) {
//            throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.DOWNLOAD_FILE_FAIL)
//                    .withErrorMessageArguments(e.getMessage());
//        }
//    }
//
//
//    /**
//     * @Author: winterchen
//     * @Description: 获取SVN文件的输出流和文件的属性
//     * @Date: 2018/2/7
//     * @param repository
//     * @param outputStream 输出流
//     * @param fileProperties 文件属性
//     * @param path 文件的相对路径 前面不带/
//     */
//    public static void getSvnFileOutputStream(SVNRepository repository, OutputStream outputStream,
//                                              SVNProperties fileProperties, String path) throws SVNException {
//
//        //进行path的处理
//        String url = path.substring(0,path.lastIndexOf("/"));
//        String filePath = path.substring(path.lastIndexOf("/") + 1);
//
//        try {
//            //获得版本库中文件的类型状态（是否存在、是目录还是文件），参数-1表示是版本库中的最新版本。
//            SVNNodeKind nodeKind = repository.checkPath(filePath, -1);
//
//            if (nodeKind == SVNNodeKind.NONE) {
//                throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.DOWNLOAD_FILE_FAIL)
//                        .withErrorMessageArguments("要查看的文件在 '" + url + "'中不存在");
//            } else if (nodeKind == SVNNodeKind.DIR) {
//                throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.DOWNLOAD_FILE_FAIL)
//                        .withErrorMessageArguments("要查看对应版本的条目在 '" + url
//                                + "'中是一个目录.");
//            }
//            //获取要查看文件的内容和属性，结果保存在baos和fileProperties变量中。
//            repository.getFile(filePath, -1, fileProperties, outputStream);
//
//        } catch (SVNException svne) {
//            throw BusinessException.withErrorCode(ErrorsWepm.JiraAndSvnIntf.DOWNLOAD_FILE_FAIL)
//                    .withErrorMessageArguments(svne.getMessage());
//        }
//
//
//    }



}
